• 1 Votes
    2 Posts
    2k Views
    G

    @studboy1114 did you get it working already? interested in some old school gaming with modern day controllers (sturdy is key). Thanks for any info

  • 0 Votes
    16 Posts
    2k Views
    louiehummvL

    [BETTER SOLUTION] ..but keeping this post for reference & continuity.

    Well.. I finally did the thing. Here's my workaround:

    Install the at job utility. sudo apt install at Enable the atd scheduling daemon to start on-boot & run it. sudo systemctl enable --now atd After connecting your controllers, record the exact name and event handler # of each one. cat /proc/bus/input/devices Now record the axis #s, minimums, & maximums of each controller's analog axes. IGNORE ANY AXIS WHERE ITS MINIMUM & MAXIMUM NEGATE EACH OTHER; ITS MIDPOINT IS 0 AND THE AXIS SHOULD BE LEFT ALONE BY THIS WORKAROUND. In the following command, substitute the event# with that of the associated controller. evdev-joystick --s /dev/input/event# Create a new udev rule. You may change the name, but leave the numerical prefix & file extension as-is. sudo nano /etc/udev/rules.d/99-joystick.rules Add the following code line in the rules file per controller using the name, axis #s, minimums, & maximums you gathered earlier. You will need to edit the following template at the [BRACKETED ENTRIES]. Notice that before the at command, there is a evdev-joystick command for each axis to override its minimum & maximum to 0. And after the grep command, the original minimums & maximums for each axis are restored. In my controller, I had four analog axes.. so add/remove axes (aka the evdev-joystick commands) as needed for your controller. SUBSYSTEM=="input", KERNEL=="event*", ACTION=="add", ATTRS{name}=="[EXACT CONTROLLER NAME]", RUN+="/bin/bash -c \"evdev-joystick --e %E{DEVNAME} --a [1st AXIS #] --minimum 0 --maximum 0 ; evdev-joystick --e %E{DEVNAME} --a [2nd AXIS #] --minimum 0 --maximum 0 ; evdev-joystick --e %E{DEVNAME} --a [3rd AXIS #] --minimum 0 --maximum 0 ; evdev-joystick --e %E{DEVNAME} --a [4th AXIS #] --minimum 0 --maximum 0 ; at -M now <<< 'timeout 30s evtest %E{DEVNAME} | grep -m 1 '\''time .*'\'' ; evdev-joystick --e %E{DEVNAME} --a [1st AXIS #] --minimum [1st AXIS MIN] --maximum [1st AXIS MAX]; evdev-joystick --e %E{DEVNAME} --a [2nd AXIS #] --minimum [2nd AXIS MIN] --maximum [2nd AXIS MAX] ; evdev-joystick --e %E{DEVNAME} --a [3rd AXIS #] --minimum [3rd AXIS MIN] --maximum [3rd AXIS MAX] ; evdev-joystick --e %E{DEVNAME} --a [4th AXIS #] --minimum [4th AXIS MIN] --maximum [4th AXIS MAX]'\"" If you haven't already, follow the previous step for your remaining controllers as new code lines. Then Ctrl-X to exit, Y to save, Enter to confirm. Here is my finished udev rule file for comparison (I didn't need to override the minimums since mine were already 0, so you'll notice them missing from my evdev-joystick commands): SUBSYSTEM=="input", KERNEL=="event*", ACTION=="add", ATTRS{name}=="Logitech Logitech Cordless RumblePad 2", RUN+="/bin/bash -c \"evdev-joystick --e %E{DEVNAME} --a 0 --maximum 0 ; evdev-joystick --e %E{DEVNAME} --a 1 --maximum 0 ; evdev-joystick --e %E{DEVNAME} --a 2 --maximum 0 ; evdev-joystick --e %E{DEVNAME} --a 5 --maximum 0 ; at -M now <<< 'timeout 30s evtest %E{DEVNAME} | grep -m 1 '\''time .*'\'' ; evdev-joystick --e %E{DEVNAME} --a 0 --maximum 255 ; evdev-joystick --e %E{DEVNAME} --a 1 --maximum 255 ; evdev-joystick --e %E{DEVNAME} --a 2 --maximum 255 ; evdev-joystick --e %E{DEVNAME} --a 5 --maximum 255'\"" SUBSYSTEM=="input", KERNEL=="event*", ACTION=="add", ATTRS{name}=="8Bitdo SF30 Pro", RUN+="/bin/bash -c \"evdev-joystick --e %E{DEVNAME} --a 0 --maximum 0 ; evdev-joystick --e %E{DEVNAME} --a 1 --maximum 0 ; evdev-joystick --e %E{DEVNAME} --a 2 --maximum 0 ; evdev-joystick --e %E{DEVNAME} --a 5 --maximum 0 ; at -M now <<< 'timeout 30s evtest %E{DEVNAME} | grep -m 1 '\''time .*'\'' ; evdev-joystick --e %E{DEVNAME} --a 0 --maximum 255 ; evdev-joystick --e %E{DEVNAME} --a 1 --maximum 255 ; evdev-joystick --e %E{DEVNAME} --a 2 --maximum 255 ; evdev-joystick --e %E{DEVNAME} --a 5 --maximum 255'\"" SUBSYSTEM=="input", KERNEL=="event*", ACTION=="add", ATTRS{name}=="8Bitdo SN30 Pro", RUN+="/bin/bash -c \"evdev-joystick --e %E{DEVNAME} --a 0 --maximum 0 ; evdev-joystick --e %E{DEVNAME} --a 1 --maximum 0 ; evdev-joystick --e %E{DEVNAME} --a 2 --maximum 0 ; evdev-joystick --e %E{DEVNAME} --a 5 --maximum 0 ; at -M now <<< 'timeout 30s evtest %E{DEVNAME} | grep -m 1 '\''time .*'\'' ; evdev-joystick --e %E{DEVNAME} --a 0 --maximum 255 ; evdev-joystick --e %E{DEVNAME} --a 1 --maximum 255 ; evdev-joystick --e %E{DEVNAME} --a 2 --maximum 255 ; evdev-joystick --e %E{DEVNAME} --a 5 --maximum 255'\"" Reload the udev interface to take on the new rule file. sudo udevadm control --reload Reconnect your controllers.. or reboot to force reconnection. sudo reboot

    This workaround was inspired by my previous tests, where I noticed the "Northwest" issue (responsible for the selection jumps) not affecting controllers whose analog axes are using 0 as a midpoint.

    So upon first connection of a controller, the new udev rule will override the min/max of any offending axis to 0/0.. thereby forcing 0 as the axis's midpoint. Then, an asynchronous at job is created to await for any button-press on the controller. Once that happens (or the timeout expires), the original min/max value of the controller's axes will immediately restore.. but not after your button-press took action AND without any selection jump! :-D

    Important notes:

    The workaround is meant to avoid the selection jump on first input of a connected controller IN EMULATION STATION. If you manage to (re)connect it during gameplay, the running emulator may halt or render control unresponsive until it's restarted.

    I set the timeout for button-press monitoring to 30s.. partly because you may need a moment to press something after connection.. partly because it's a way to avoid accumulating jobs in the at queue by not waiting indefinitely. If the selection jumps are still happening, press something sooner! ...or you can increase the timeout in the udev rule. But I wouldn't make it higher than 60s.

    Otherwise, enjoy your better RetroPie experience everyone!

  • 0 Votes
    13 Posts
    5k Views
    brandflake11B

    I'm glad to hear everything is working for you now!

  • 0 Votes
    9 Posts
    2k Views
    mituM

    The pastebin link is ok; the error Bluetooth messages seem to be the only ones available (no detection info), but they don't provide any indication where the fault is, unfortunately.

  • lr-vice fire button

    Help and Support
    3
    0 Votes
    3 Posts
    511 Views
    R

    Simple and fast solution, I'm ashamed I didn't find this myself, but I'm new to retropie and there is so much to learn. There are so many menu's to explore and the first days I managed to render my system useless (more than ones) by changing wrong setting so I ended up starting from scratch. I think this is part of the fun, back in the old days (I got my first vic 20 in 1982) you had to figure things out the hard way too, thank God one can sometimes rely on the internet community for help.

    Regards Noel

  • 0 Votes
    3 Posts
    324 Views
    DavidDraperD

    Mitu- ok. That makes a lot of sense. Thanks.

    David

  • 0 Votes
    1 Posts
    189 Views
    No one has replied
  • Cannot Access RGUI in-game

    Help and Support
    9
    0 Votes
    9 Posts
    933 Views
    dankcushionsD

    @helloThere poor performance in mupen64plus-next is expected right now, i just wouldn't expect it to crash, so now that's fixed i'm happy :) i would use standalone mupen64plus-gliden64 until we have news on -next.

  • 0 Votes
    2 Posts
    252 Views
    mituM

    You can reset the input configuration by deleting the default.cfg file - https://retropie.org.uk/docs/MAME/#controls.

  • 0 Votes
    3 Posts
    317 Views
    F

    @mitu oh sorry didn't realise but still a pain

    This is the one I followed and in general it works... If you don't mind not going into any settings or remapping the controller every time you turn it on.

  • 0 Votes
    7 Posts
    2k Views
    busywaitB

    @mitu said in Unique config/controller mapping per Gamepad per Core:

    If you're thinking of doing this for multiple joysticks/systems, then it might be easier to use an onstart script for runcommand. Instead of overriding joypad_autoconfig_dir, keep a list of desired configurations for a joystick and just copy it over to joypad_autoconfig_dir before the game starts. This way you'll keep one config per standard controller (like the SF 30 Pro) and you can have configs per-system for certain controllers.
    ...
    Somehow this comes up as more complicated than it is and I can't help of thinking if there's a better way.

    I modified your script so that it doesn't need to know the names of my controllers or use any new folders:

    joypad_autoconfig_dir="/opt/retropie/configs/all/retroarch-joypads" # Put this script in /opt/retropie/configs/all/runcommand-onstart.sh # To support different gamepad autoconfigurations for a joypad in different # libretro emulators copy the current .cfg and rename it with _default added # to the end of the filename. # For each gamepad+emulator combination that requires a variation create # a new copy of the .cfg_default file, changing "default" to match the libretro # core that it applies to, for example .cfg_lr-picodrive. # Modify each variation as needed. This script will copy the variations # (or the default) over the orginal .cfg file as required each time an # emulator is started. # Log output goes to /dev/shm/runcommand.log echo "$0: looking for custom gamepad autoconfigs for $2 in $joypad_autoconfig_dir" >&2 for default_cfg in $joypad_autoconfig_dir/*.cfg_default; do [ -e "$default_cfg" ] || continue # stop now if there are no matches target_cfg_name=${default_cfg%.*} # remove file extention .cfg_default required_variation_cfg="$target_cfg_name.cfg_$2" if [ -e "$required_variation_cfg" ]; then echo "Using autoconfig variation $required_variation_cfg" >&2 cp -f "$required_variation_cfg" "$target_cfg_name.cfg" else echo "Using default gamepad autoconfig $default_cfg" >&2 cp -f "$default_cfg" "$target_cfg_name.cfg" fi done

    All of the .cfg variations stay together in the /opt/retropie/configs/all/retroarch/autoconfigs directory, but with different extensions to indicate which core they are needed for. For example, autoconfigs has these files:

    pi@rpi-tv:/opt/retropie/configs/all/retroarch $ ls -1 autoconfig/ 'Microsoft X-Box One pad.cfg' 'SWITCH CO.,LTD. USB Gamepad .cfg' 'SWITCH CO.,LTD. USB Gamepad .cfg_default' 'SWITCH CO.,LTD. USB Gamepad .cfg_lr-fbneo' 'SWITCH CO.,LTD. USB Gamepad .cfg_lr-genesis-plus-gx' 'SWITCH CO.,LTD. USB Gamepad .cfg_lr-picodrive' 'USB gamepad .cfg'

    The .cfg_lr-picodrive is a symlink to the .cfg_lr-genesis-plus-gx that I made just to check if it would work.

    I put some logging in to remind me what's happening if I forget that it's there.

    Using joypad_autoconfig_dir in retroarch.cfg seems a bit more "standard", to me so I've stuck with that here. I thought the script could be useful to share though :)

  • 0 Votes
    5 Posts
    717 Views
    D

    @Krakatoa everything is plugged in the exact same way. Nothing different.

  • 0 Votes
    7 Posts
    3k Views
    mituM

    @sad_muso said in Slow game loading times with 8bitdo Lite controller:

    Out of interest, what is considered the 'best' Bluetooth retro controller all round for Retropie, considering the build quality, input lag and button compatibility with Retropie?

    The PS4 DualShock controller is a good Bluetooth controller, no problems pairing and low input lag.

  • Controller Issue

    Help and Support
    5
    0 Votes
    5 Posts
    252 Views
    T

    Hi Dank. I just figured it out.

    I started Retroarch, went to settings --> input --> then looked at Input User 1 Binds and compared to Input User 2 Binds. Both had the same Controller (Mad Catz Chun Li Fight Stick) listed, so I pulled in a secondary controller and mapped it accordingly.

    The problem is solved. Now I have one other question I'll have to ask in the a new topic after I search more.

    Thanks!

    Rev

  • 0 Votes
    11 Posts
    1k Views
    mituM

    @ElrasM said in False controller inputs:

    But nevertheless any suggestions for my problem?

    First, xboxdrv should not be installed unless you really know how to use it. It's not a real device driver, but emulates an Xbox compatible controller. The xpad is usually used for X360/Xbox controllers. If that doesn't work, then it means you're encountering the same issue.

    Is there any chance that there is a seperate file for controller input detection in ES?

    The configuration for EmulationStation's input is in \\retropie\configs\all\emulationstation\es_input.cfg. You can verify there that your input is mapped correctly and there are no button overlaps.

    You can also start EmulationStation with the --debug flag and it will log the inputs pressed.

  • 0 Votes
    3 Posts
    185 Views
    V

    Thank you, but when the second controller is plugged in P1 cannot hotkey out. Both controllers have to be pulled and P1 reinserted to quit. Any ideas?

  • 2 player with GamePi43?

    Help and Support
    5
    0 Votes
    5 Posts
    610 Views
    P

    @mitu wow thank you so much! I didn’t realize it was such a simple solution lol

  • USB seen as controller

    Help and Support
    9
    0 Votes
    9 Posts
    432 Views
    B

    @mitu mb xD Thanks anyway

  • Controller Configuration stuck?

    Help and Support
    6
    0 Votes
    6 Posts
    184 Views
    H

    Its a 4 port "Makerspot" hub with a micro USB header and full-sized plugs. It does not have it's own power.

    I repeated the same steps using just a micro-USB to USB adapter(removing the hub) and had the exact same outcome.

  • 0 Votes
    6 Posts
    1k Views
    mituM

    @atariplayer I'm not sure you edited the right configuration file. What USB drive ?

    Can you please add more info about your system, as detailed in https://retropie.org.uk/forum/topic/3/read-this-first ?

    Thanks for the broken link notice, we'll try to fix it.